package com.cqlfn.business.data.datapairingfill.dao;

import com.cqlfn.business.data.configManagement.entity.CfgColumn;
import com.cqlfn.business.data.configManagement.entity.CfgTable;
import com.cqlfn.business.data.datapairingfill.bean.DataPairingUpload;
import com.cqlfn.business.data.datapairingfill.bean.LatestColumn;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * @ClassName DataPairingFillDao
 * @Description T0D0 选表的Dao
 * @Author yuanfeng
 * @Date 2019/8/8 13:55
 * @Version 1.0
 **/
public interface DataPairingFillDao {

    /**
     * @return 把得到的所有表返回
     * @Description:得到所有表
     * @Param null
     * @date: 2019/8/12 9:52
     */

    Iterable<CfgTable> getAllTables();

    /**
     * @return 返回字段的一些约束
     * @Description:前端列字段校验
     * @Param tableName 表名
     * @date: 2019/8/12 9:53
     */
    List<Map<String, Object>> validationColumn(String tableName);

    /**
     * @return 返回新增数据成功或者出错的结果
     * @Description:新增数据
     * @Param map 前端传进来的json Map
     * @Param tableName 表名
     * @date: 2019/8/12 9:55
     */
    CfgTable getCfgTable(String tableName);

    /**
     * @return 返回分页后的数据
     * @Description:查询分页
     * @Param pageable 分页对象
     * @Param tableName 表名
     * @Param result 存放返回的map数据
     * @date: 2019/8/12 10:12
     */

    Map<String, Object> listByTableName(Pageable pageable,String tableName,Map<String, Object> result);

    /**
     * @return 返回所有列
     * @Description:获取表的列名
     * @Param tableName 表名
     * @Param list 存放结果map数据
     * @Param map 存放返回数据
     * @date: 2019/8/12 10:43
     */
    List<Map<String, Object>> getColumnName(String  tableName, List<Map<String, Object>> list, Map<String, Object> map);

    /**
     * @return 返回详情的所有字段数据
     * @Description:点击显示详情列
     * @Param columnId 列id
     * @Param tableName 表名
     * @Param hashMap 存放结果
     * @date: 2019/8/12 10:45
     */
    List<CfgColumn> listDetail(Map<String, Object> hashMap, Long columnId, String tableName);


}
